LDAP คืออะไร
LDAP (Lightweight Directory Access Protocol) เป็น protocol ที่ใช้สำหรับค้นหาข้อมูลในฐานข้อมูล ก่อนที่จะลงลึกว่า LDAP คืออะไร มาดูที่มากันก่อนครับ Directory Access Protocol (DAP) คือมาตราฐาน X.500 ของ directory ในระบบ network ซึ่ง LDAP เป็น “lightweight” นั้นหมายถึง มีขนาดเล็กลง เพราะ version เริ่มต้นไม่ได้มีระบบ security มาด้วย ส่วนใหญ่นำเอามาใช้กับข้อมูลจำพวก รายระเอียดพนักงาน เช่น ชื่อ,นามสกุล,ตำแหน่ง,ที่อยู่
ความเป็นมาของ LDAP
LDAP เริ่มต้นคิดค้นที่ University of Michigan และได้รับการรับรองมากกว่า 40 บริษัท ซึ่งทาง Netscape ได้เพิ่มไว้เป็นส่วนหนึ่งของ product และทาง Microsoft เองนำมาใช้กับ Outlook Express ด้วย อีกทั้ง Cisco ก็ support LDAP ในสินค้าด้าน network
การทำงานของ Protocol LDAP
เมื่อ Client ทำการเชื่อมต่อ LDAP session เข้ากับ LDAP server จะเรียกว่า Directory System Agent (DSA) ซึ่งปกติจะใช้ TCP port 389 สำหรับ LDAP over SSL จะเป็น port 636 โดยทาง client จะส่ง request มาที่ server และทาง server ก็จะตอบ response กลับไป ไม่จำเป็นที่ client ต้องรอ response กลับมาก่อนที่จะส่ง request อันต่อไป รวมถึง server เองก็ไม่ต้องส่ง response เรียกตามลำดับด้วย เพราะข้อมูลทั้งหมดรับส่งโดยใช้ Basic Encoding Rules (BER)
ขั้นตอนการทำงานของ Client จะมีได้ดังนี้
- StartTLS — Transport Layer Security เพื่อเข้ารหัสข้อมูล
- Bind — Auten user/pass กับทาง server
- Search — ค้นหาข้อมูลด้วย attribute key
- Compare — ทดสอบดูว่าข้อมูลที่ค้นหา ตรงกับ attribute
- Add a new entry
- Delete an entry
- Modify an entry
- Modify Distinguished Name (DN) — แก้ไข entry
- Abandon — ยกเลิก request
- Extended Operation — ใช้เพื่อกำหนด operation อื่น
- Unbind — logout เพื่อปิด connection
บางที server อาจจะส่ง “Unsolicited Notifications” ซึ่งไม่ได้ตอบมาทุก request เฉพาะกรณีเกิด timeout
โครงสร้างของ LDAP Directory
- ตัว entry (ตำแหน่งข้อมูล) จะประกอบด้วยชุดของ attributes
- ทุก attribute จะมีชื่อ (type, description) ซึ่งจะกำหนดใน schema
- ทุก entry ต้องไม่ซ้ำกัน ซึ่งเป็น Distinguished Name (DN)
- Each entry has a unique identifier: its Distinguished Name (DN)
ตัวอย่าง entry ที่แสดงในรูปแบบ LDAP Data Interchange Format (LDIF)
dn: cn=John Doe,dc=example,dc=com cn: John Doe givenName: John sn: Doe telephoneNumber: +1 888 555 6789 telephoneNumber: +1 888 555 1232 mail: john@example.com manager: cn=Barbara Doe,dc=example,dc=com objectClass: inetOrgPerson objectClass: organizationalPerson objectClass: person objectClass: top
dn คือ Distinguished Name ของ entry นี้ ไม่ใช่ attribute “cn= John Doe” เป็น RDN (Relative Distinguished Name)
- “cn= John Doe” คือ RDN (Relative Distinguished Name)
- “dc= example, dc=c0m” ทั้งหมดคือ DN ของ parent entry
cn คือ Common Name
dc คือ Domain Component
Sever จะเก็บข้อมูลในลักษณะ subtree โดยจะเริ่มหาทีละ entry เช่น “dc=example,dc=com
” โดย server อาจจะใช้ server อื่นเป็นตัวอ้างอิง เช่น “ou=department,dc=example,dc=com
” อาจจะตอบกลับมาเป็น reference ไปที่ server ที่มีข้อมูลอยู่ในส่วนของ directory tree ซึ่งทาง client สามารถที่จะติดต่อกับ server อื่นได้
Author: Suphakit Annoppornchai
Credit: https://saixiii.com,https://en.wikipedia.org
[…] LDAP database หรือ Lightweight Diretory Access Protocol ทำงานโดยอาศัย Active Directory (AD) […]